继承、封装和多态
1.面向对象的特征:2.final, finally, finalize 的区别
- final是一个修饰符,声明的变量为不可修改。
- finally是异常捕获的关键字。无论是否异常最后都会执行finally。
- 垃圾回收调用时会先调用。
3.Exception、Error、运行时异常与一般异常有何异同
- Error是虚拟机级别的错误,不可恢复,如OutOfMemoryError、ThreadDeath。
- Exception:
- Checked Exception:编译器强制程序去捕获该类异常。如IOException、SQLException。
- RunTime Exception:运行时异,编译器没有进行强制的捕获并处理。如NullPointerException
4.请写出5种常见到的runtime exception
NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException,ClassCaseException,TimeoutException
5.int 和 Integer 有什么区别,Integer的值缓存范围
Integer是int类型的包装类,int类型只记录值,Integer有内存地址和值。缓存范围-128~127. 默认Integer=null,int=0;
6.包装类,装箱和拆箱
- 基本数据类型:short,byte,char,int,float,double,long,boolean
- 包装类型 :Integer Byte Short Long Float Double Character Boolean
- 转换为大写为装箱,转化为小写的为拆箱子
- 缓冲池子:Integer范围-128~127 会自动装箱拆箱。(
享元模式
)
Integer ii=1;
Integer iii=Integer.valueOf(1);//自动装箱
System.out.println(ii==iii&&ii==1&&iii==1);
//在-128~127 之外的数
Integer i1 =200;
Integer i2 =200;
System.out.println("i1==i2: "+(i1==i2));//false
// 在-128~127 之内的数自动拆箱
Integer i3 =100;
Integer i4 =100;
System.out.println("i3==i4: "+(i3==i4));//true
int i0=100;
System.out.println(i3==i0);//true
System.out.println(i1==i0);//false
7.String、StringBuilder、StringBuffer
String为字符串常量,String对象一旦创建之后该对象是不可更改的。速度最慢
StringBuffer对象是变量,可以进行字符串更改。速度其次,
线程安全
。StringBuilder速度最快,线程不安全。
8.重载和重写的区别
- 重写:发生在继承类上,方法名,参数类型,返回类型等都要一致。
- 重载:发生在一个类上,方法名相同,参数类型,返回类型,权限控制可以不一样。
9:抽象类和接口有什么区别
- 接口里面的方法都是public abstract,可以定义静态常量, 抽象类可以定义私有变量和私有方法
- 抽象类只能继承一个父类,但是可以多实现接口,接口可以多继承,
- 实现接口就要实现所有的方法, 抽象类可以不用实现接口的全部方法
- 抽象类
不能实例化
,不能构建对象,子类必须实现父类的抽象方法,子类才可以成功的继承父类
10.说说反射的用途及实现
- 运行时动态获取一个类的属性、方法
- 反射API
11.说说自定义注解的场景及实现
比如说实现自定义注解来实现单例模式。多数据源使用自定义注解指定。
12.HTTP请求的GET与POST方式的区别
- get会把参数放到url中,post放在htmlheader中用户看不了
- get传输数据大小比较小,而post比较大
- get从服务器获取数据,而post提交数据
- get安全性不高,post安全性 高.
13.Session与Cookie区别
- cookie保存在客户端,session保存在服务端。
- cookie实现一周自动登录。session实现登录验证。
14.列出自己常用的JDK包
util包,io输入输出流包,net网络传输包
15.MVC设计思想
- Modoul数据层dao,View视图层前端页面,Controller控制器请求跳转。
16.equals与==的区别
- equals比较两个变量的值是否相同,==判断值和引用地址是不是一个,判断是否同个对象。
- 类似Integer这些包装类的大小比较可以直接equal。
17.hashCode和equals方法的区别与联系
- equals()相等的两个对象,hashcode()一定相等;
- hashcode()不等,一定能推出equals()也不等;
- hashcode()相等,equals()可能相等,也可能不等。
18.什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用
- 序列化是指对象在网络传输或者保存到硬盘等过程中,对象要转化的一种形式。implements Serializable只是为了标注该对象是可被序列化的。
- Java对象的
static
,transient
修饰的属性不能被序列化。静态的是因为保存在内存中。transient
标记该对象不可被序列化。
19.Java的平台无关性如何体现出来的
- 一处开发,多处运行。使用jdk开发的代码编译的class文件在各个平台上的 jre 上面都可以运行。
20.JDK和JRE的区别
- jre是运行时环境
- jdk包括jre、编译等工具。
21.Java 8有哪些新特性
- Lambda表达式
- 流的操作
- 增加了很多函数式接口
22.值传递和引用传递。
- 一般认为,java的基本数据类型都是值传递,修改不会影响到原来的变量。
- 所有的集合类都是引用传递,修改了会对应修改到原来变量的值。